<?php

namespace app\official\controller;

//引入微信扩展类

use mikkle\tp_wechat\Wechat;

use mikkle\tp_wechat\WechatApi;

use \think\View;

//让当前的控制器来继承微信的接口类

class Index extends WechatApi

{

    //创建一个配置

    protected $options = [

        'token' => 'zhou.zbrick',

        'appid' => 'wxc78cf5f77513334a',

        'appsecret' => 'c740f0ad056d442ba2f304db252e4fbd',

        'encodingaeskey' => '',

    ];



    //网站第一次匹配 true 1为匹配 第二次就改为false

    protected $valid = false;



    //是否开启钩子

    protected $isHook = false;


    public function __construct()

    {

        parent::__construct();



        $this->view = new View();



        $this->request = request();
    }



    //服务器对接的方法

    public function auth()

    {

        //调用父类的index方法 里面就有签名验证的过程

        $this->index();



        //首次关注回复信息

        $subscribe = $this->returnEventSubscribe();



        //weObj 内部对象

        //text 设置要发送的文本

        //reply  发送信息给微信服务器

        $this->weObj->text($subscribe)->reply();



        //调用关键词回复的方法

        $this->returnMessageText();



        //调用地理位置信息

        $this->returnMessageLocation();
    }

    //创建自定义菜单的方法
    public function menu()
    {
        //封装微信的自定义菜单，将封装好的菜单的数据 发送给微信，让微信接收到菜单数据后，对我们公众号来进行设置
        $menu = [
            "button" => [
                //第一个按钮
                [
                    'type' => 'view',  //页面跳转
                    'name' => '论坛首页',  //页面名称
                    'url' => 'http://zhou.zbrick.cn/' //跳转地址
                ],
                //第二个按钮
                [
                    'name' => "点击菜单",
                    "sub_button" => [
                        [
                            //触发一个点击事件 可以发送一个关键词
                            'type' => 'click',
                            'key' => 'V1001_GOOD',  //点击按钮后发送过去的关键词
                            'name' => '点赞事件'
                        ],
                        [
                            'type' => 'view',
                            'name' => '百度首页',  //点击按钮后发送过去的关键词
                            'url' => 'https://www.baidu.com/'
                        ]
                    ]
                ],
                //第三个按钮
                [
                    'name' => '扫码事件',
                    'sub_button' => [
                        [
                            'type' => 'scancode_waitmsg', //扫码类型
                            'name' => '扫码类型',
                            "key" => "rselfmenu_0_0",
                        ],
                        [
                            'type' => 'pic_sysphoto', //拍照类型
                            'name' => '系统拍照',
                            'key' => 'rselfmenu_1_0'
                        ]
                    ]
                ]
            ]
        ];

        //将php数组转换为json 然后中文 不转码
        $json = json_encode($menu, JSON_UNESCAPED_UNICODE);

        // 将菜单数据发送给微信的服务器，让公众号生成自定义菜单
        $result = Wechat::menu()->createMenu($json);

        if ($result) {
            echo '自定义菜单创建成功';
        } else {
            echo '自定义菜单创建失败';
        }
    }

    //发送模板消息的方法
    public function send()
    {
        if ($this->request->isPost()) {
            $params = $this->request->param();

            $createtime = date('Y年m月d日 H:i:s', time());

            $data = [
                'touser' => $params['touser'],
                'template_id' => 'FMlw8CY3l1ya8GF0sAtkEbJIhgRw2iudjA6oZPGp6X4',
                'url' => 'http://zhou.zbrick.cn/',
                'topcolor' => '#FF0000',
                'data' => [
                    'first' => [
                        'value' => '购买成功！',
                        'color' => '#173177'
                    ],
                    'code' => [
                        'value' => $params['code'],
                        'color' => '#173177'
                    ],
                    'name' => [
                        'value' => $params['name'],
                        'color' => '#173177'
                    ],
                    'createtime' => [
                        'value' => $createtime,
                        'color' => '#173177'
                    ],
                    'content' => [
                        'value' => $params['content'],
                        'color' => '#173177'
                    ]
                ]
            ];

            // 数组转成json数据
            $json = json_encode($data, JSON_UNESCAPED_UNICODE);

            $res = Wechat::message()->sendTemplateMessage($json);

            if ($res) {
                echo '发送成功';
            } else {
                echo '发送失败';
            }
        }

        return $this->view->fetch();
    }
}
